package com.rerun.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.rerun.entity.vo.ResumeTemplateParam;
import com.rerun.entity.Resume;
import com.rerun.entity.vo.ParkResumeVo;
import com.rerun.vo.park.InteviewResumeVo;
import com.rerun.vo.park.ParkResumeSearchVo;
import com.rerun.vo.park.ReceivedResumeVo;

import java.util.List;

/**
 * The interface Resume service.
 *
 * @author dax.
 * @version v1.0
 * @since 2017 /9/29 9:28
 */
public interface IResumeService extends IService<Resume> {

    /**
     * 学校导入生成  通过定时任务生成对应账户.
     *
     * @return the list
     */
    List<Resume> selectWhoNoAccount();

    /**
     * 获取用户的简历.
     *
     * @param memberId the member id
     * @return the resume
     */
    Resume selectByMemberId(String memberId);

    /**
     * 根据手机号码获取简历
     *
     * @param phone the phone
     * @return resume resume
     */
    Resume selectByPhoneNumber(String phone);

    /**
     * 分页条件查询简历
     *
     * @param resumeSearchVo the resume search vo
     * @param page           the page
     * @return page page
     */
    Page<ParkResumeVo> selectResumeListPage(ParkResumeSearchVo resumeSearchVo, Page<ParkResumeVo> page);

    /**
     * 查看求职者简历
     *
     * @param memeberId the memeber id
     * @return resume resume
     */
    Resume lookResume(String memeberId);

    /**
     * 园所收藏简历
     *
     * @param page   the page
     * @param parkId the park id
     * @return page page
     */
    Page<ParkResumeVo> selectCollectResumesPage(Page<ParkResumeVo> page, String parkId);

    /**
     * 获取简历详情.
     *
     * @param memberId the member id
     * @return the resume template param
     */
    ResumeTemplateParam selectResumeDetailByMemberId(String memberId);

    /**
     * Received resume page.
     *
     * @param parkId the park id
     * @param page   the page
     * @return the page
     */
    Page<ReceivedResumeVo> receivedResume(String parkId, Page<ReceivedResumeVo> page);

    /**
     * For the interview page.
     *
     * @param status the status
     * @param parkId the park id
     * @param page   the page
     * @return the page
     */
    Page<InteviewResumeVo> forTheInterview(String status, String parkId, Page<InteviewResumeVo> page);


    /**
     * 显示/隐藏 简历.
     *
     * @param memberId the member id
     * @param status   the status
     * @return the int
     */
    int resumeShowAndHide(String memberId, Integer status);

    /**
     * 更新resume  memberId.
     *
     * @see com.rerun.task.MemberTask
     */
    void updateMemberIdTask();

    /**
     * Select phone number no member id list.
     *
     * @return the list
     */
    List<String>  selectPhoneNumberNoMemberId();

    /**
     * 根据状态获取园长端收到简历的数量
     *
     * @param parkId the park id
     * @param status the status
     * @return resume status num
     */
    int getResumeStatusNum(String parkId, String status);
}
